home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <errno.h>
- #include "crtlocal.h"
-
- int write(int fd, const void *buf, unsigned size)
- {
- OSErr err;
- IOParam pb;
- if (crt_fd_tab[fd].flags & O_PIPE)
- {
- if ((crt_fd_tab[fd].fd&-256) == 100<<8) return cwrite(crt_fd_tab[fd].fd&255,buf,size);
- return writepipe(fd, (char *)buf, size);
- }
- else if (crt_fd_tab[fd].flags & O_CATALOG)
- {
- errno = EISDIR;
- return -1;
- }
- else
- {
- pb.ioCompletion = 0;
- pb.ioRefNum = crt_fd_tab[fd].fd;
- pb.ioReqCount = size;
- pb.ioPosMode = fsAtMark;
- pb.ioBuffer = (void *)buf;
- PBWriteSync((ParmBlkPtr)&pb);
- err = errtran(pb.ioResult);
- return pb.ioActCount;
- }
- }
-
-